﻿using Nemerle.Collections;
using Nemerle.Text;
using Nemerle.Utility;

using System;
using System.Collections.Generic;
using System.Linq;

namespace Nemerle2.Compiler
{
  /// <summary>
  /// Description of IFunHeader.
  /// </summary>
  public interface IFunHeader : IMemberInfo
  {
    /// Contains info about parameters excluding parameter array. See chapter 10.6.1 Method parameters of C# spec.
    FixedParameters : list[IParameterInfo]        { get; }
    /// Contains info about parameter Array of var.args. method. See chapter 10.6.1 Method parameters of C# spec.
    ParameterArray  : ValueOption[IParameterInfo] { get; }
    /// Contains info about all parameters (including fixed parameters and parameter array). See chapter 10.6.1 Method parameters of C# spec.
    Parameters      : list[IParameterInfo]        { get; }
    /// Contains info about return value (type and castom attributs).
    Return          : IInfo                       { get; }

    FunType         : FixedType.Fun               { get; }
    ReturnType      : NType                       { get; }
    ParametersType  : FixedType.Tuple             { get; }

    IsVarArgs   : bool            { get; }
  }
}
